<?php defined('BASEPATH') OR exit('No direct script access allowed');
	
/**
 * Exibe o array formatado com a tag <pre></pre>
 * @param object $array
 */

function print_pre($array)
{
	print('<pre>');
	print_r($array);
	print('</pre>');
}

function mask($val, $mask)
{
	try {
		 $maskared = '';
		 $k = 0;
		 
		 for($i = 0; $i<=strlen($mask)-1; $i++)
		 {
			 if($mask[$i] === '#')
			 {
				 if(isset($val[$k]))
				 $maskared .= $val[$k++];
			 }
			 else
			 {
				 if(isset($mask[$i]))
				 $maskared .= $mask[$i];
			 }
		 }
		 return $maskared;
		 
	 }catch (Exception $e){
	 	throw $e;
	 }
}

function arrayToObjeto($array){
	
	try {
		
		$objeto = null;
		
		if (is_array($array)){
			$objeto = (object) $array;
		}
		
		return $objeto;
		
	}catch (Exception $e){
		throw $e;
	}
	
}

function objetoToArray($objeto){

	try {

		$array = null;

		if (is_object($objeto)){
			$array = (array) $objeto;
		}

		return $array;

	}catch (Exception $e){
		throw $e;
	}

}

function formataDataPorExtenso($data){
	
	try {
	
		$dateFormatada = date('d/m/Y',strtotime(trim($data)));
		
		$array = explode("/", $dateFormatada);
		
		$dia = $array[0];
		$mes = $array[1];
		$ano = $array[2];
		
		switch ($mes){
			case "01": $mes = "Janeiro"; break;
			case "02": $mes = "Fevereiro"; break;
		    case "03": $mes = "Março"; break;
			case "04": $mes = "Abril"; break;
			case "05": $mes = "Maio"; break;
			case "06": $mes = "Junho"; break;
			case "07": $mes = "Julho"; break;
			case "08": $mes = "Agosto"; break;
			case "09": $mes = "Setembro"; break;
			case "10": $mes = "Outubro"; break;
			case "11": $mes = "Novembro"; break;
			case "12": $mes = "Dezembro"; break;
		}
		
		return  $dia . " de " . $mes . " de " . $ano;
		
	}catch (Exception $e){
		throw $e;
	}
}

function formataDataHoraPorExtenso($data){

	try {

		$dateFormatada = date('d/m/Y', strtotime(trim($data)));
		$horaFormatada = date('H:i:s', strtotime(trim($data)));

		$array = explode("/", $dateFormatada);

		$dia = $array[0];
		$mes = $array[1];
		$ano = $array[2];

		switch ($mes){
			case "01": $mes = "Janeiro"; break;
			case "02": $mes = "Fevereiro"; break;
			case "03": $mes = "Março"; break;
			case "04": $mes = "Abril"; break;
			case "05": $mes = "Maio"; break;
			case "06": $mes = "Junho"; break;
			case "07": $mes = "Julho"; break;
			case "08": $mes = "Agosto"; break;
			case "09": $mes = "Setembro"; break;
			case "10": $mes = "Outubro"; break;
			case "11": $mes = "Novembro"; break;
			case "12": $mes = "Dezembro"; break;
		}

		return  $dia . " de " . $mes . " de " . $ano . " às " . $horaFormatada;

	}catch (Exception $e){
		throw $e;
	}
}

//Valida se o usuário está logado
function usuarioLogado($logged){
	
	try {
		if (empty($logged) || $logged != true) {
			redirect("admin");
		}else{
			return true;
		}
	} catch (Exception $e) {
		throw $e;
	}
}

function removeAcento($string){
	try {
		
		return preg_replace( '/[`^~\'"]/', null, iconv( 'UTF-8', 'ASCII//TRANSLIT', $string ) );
		
	} catch (Exception $e) {
		throw $e;
	}
}

function removeEspacoPorBarra($string){
	
	try {
		
		if (!empty($string)){
			return str_replace(" ", "_", $string);
		}
		
		return $string;
		
	} catch (Exception $e) {
		throw $e;
	}
}

function removeCaracteresEspeciais($string){
	try {
		
		$caracteres = array("!","@","#","$","£","%","¢","¨","¬","&","*","(",")","-","_","=","+","§","`","´","{","[","ª","}","]","º","~","^","?","/","°",":",";",".",">","<",",");
		
		if (!empty($string)){
			return str_replace($caracteres, "", $string);
		}
	
		return $string;
		
	} catch (Exception $e) {
		throw $e;
	}
}

// Passando data do banco "AAAA-MM-DD" para "DD/MM/AAAA"
function mostraData ($data) {
	try {
		
		if (!empty($data) && $data != "0000-00-00") {
			return date('d/m/Y', strtotime($data));
		}
		else { 
			return null; 
		}
		
	} catch (Exception $e) {
		throw $e;
	}
}

function mostraDataHora ($data) {
	try {
		
		if (!empty($data) && $data != "0000-00-00 00:00:00") {
			return date('d/m/Y H:i:s', strtotime($data));
		}
		else {
			return null;
		}
		
	} catch (Exception $e) {
		throw $e;
	}
}

function mostraDataManutencao ($data) {
	try {
		if (!empty($data) && $data != "0000-00-00 00:00:00") {
			return date('Y/m/d H:i:s', strtotime($data));
		}
		else {
			return null;
		}
	} catch (Exception $e) {
		throw $e;
	}
}
 
// Passando data do text box "DD/MM/AAAA" para "AAAA-MM-DD"
function gravaData ($data) {
	try {
		
		if (!empty($data)) {
			return date("Y-m-d",strtotime(str_replace('/','-',$data)));
		}
		else { 
			return null; 
		}
		
	} catch (Exception $e) {
		throw $e;
	}
}

function gravaDataHora ($data) {
	try {
		
		if (!empty($data)) {
			return date('Y-m-d H:i:s', strtotime(str_replace('/','-',$data)));
		}
		else {
			return null;
		}
		
	} catch (Exception $e) {
		throw $e;
	}
}

function utf8_encode_deep(&$input){
	try {

		if (is_string($input)) {
	        $input = utf8_encode($input);
	    } else if (is_array($input)) {
	    	
	        foreach ($input as &$value) {
	            utf8_encode_deep($value);
	        }
	
	        unset($value);
	    } else if (is_object($input)) {
	        $vars = array_keys(get_object_vars($input));
	
	        foreach ($vars as $var) {
	            utf8_encode_deep($input->$var);
	        }
	    }
		
	}catch (Exception $e){
		throw $e;
	}
}

function formataDinheiroDB($valor){
	$valor = str_replace("R$", "", $valor);
	$valor = str_replace(" ", "", $valor);
	$valor = str_replace(".", "", $valor);
	$valor = str_replace(",", ".", $valor);
	
	return $valor;
}

function formataDBDinheiroTela($valor){
	$valor = "R$ " . $valor;
	$valor = str_replace(".", ",", $valor);

	return $valor;
}

function encrypt($string, $url_safe=TRUE){
	$CI =& get_instance();
	
	$stringEncrypt = $CI->encryption->encrypt(trim($string));
	
	if ($url_safe){
		$stringEncrypt = strtr($stringEncrypt,array('+' => '.',	'=' => '-',	'/' => '~'));
	}
	
	return $stringEncrypt;
}

function decrypt($string, $url_safe=TRUE){
	$CI =& get_instance();
	
	$string = strtr($string,array('.' => '+', '-' => '=', '~' => '/'));
	
	return $CI->encryption->decrypt($string);
}

?>